/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufjf.posjava.cm.model.DAO;

import br.ufjf.posjava.cm.model.Paciente;
import br.ufjf.posjava.cm.util.GenericDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Fabíola
 */
public class PacienteDAO extends GenericDao <Paciente, Integer> {

    @Override
    public void inserir(Paciente obj) throws ClassNotFoundException, SQLException {
        String sql = "INSERT INTO paciente (nome) VALUES (?)";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.getNome());
    
        executaDML(sql, lista);
    
    }

    @Override
    public void alterar(Paciente obj) throws ClassNotFoundException, SQLException {
         String sql = "UPDATE paciente SET nome = ? where id = ?";
       
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.getNome());
        lista.add(obj.getIdPaciente().toString());

        executaDML(sql, lista);
    }

    @Override
    public void apagar(Paciente obj) throws ClassNotFoundException, SQLException {
         String sql = "DELETE FROM paciente WHERE id = ?";

        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.getIdPaciente() + "");

        executaDML(sql, lista);
    }

    @Override
    public Paciente pesquisarChave(Integer obj) throws ClassNotFoundException, SQLException {
        String sql = "SELECT * FROM paciente WHERE id = ?";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.toString());

        ResultSet rs = executaSql(sql, lista);
        if (rs.next()) {
            Paciente paciente = new Paciente(rs.getInt("id"), rs.getString("nome"));
            return paciente;
        } else {
            return null;
        }
    }

    @Override
    public ArrayList<Paciente> buscarTodos() throws ClassNotFoundException, SQLException {
         String sql = "SELECT * FROM paciente";
        ArrayList<String> lista = new ArrayList<String>();
        ArrayList<Paciente> listaPa = new ArrayList<Paciente>();
        ResultSet rs = executaSql(sql, lista);
        while (rs.next()) {
            Paciente pa = new Paciente(rs.getInt("id"), rs.getString("nome"));
            listaPa.add(pa);
        }
        return listaPa;
    }
    
    public ArrayList<Paciente> buscarPaciente(String nome) throws ClassNotFoundException, SQLException {
        String sql = "SELECT * FROM paciente where nome LIKE '%"+nome+"%'";    
        
        ArrayList<String> lista = new ArrayList<String>();
        ArrayList<Paciente> listaPa = new ArrayList<Paciente>();
        ResultSet rs = executaSql(sql, lista);
        while (rs.next()) {
            Paciente pa = new Paciente(rs.getInt("id"), rs.getString("nome"));
            listaPa.add(pa);
        }
        return listaPa;
    }
    
}
